假設今天在架設一台伺服器運作使用時,但很怕資料庫或程式被誤刪等狀況,這時候就需要做好系統備份,排程就可以在特定時間內做備份的動作,但這類的動作基本上會在夜間時段作執行。
參數
-u
編輯(user)其他使用者的排程內容。只有 root
權限才可以使用。-l
列出(list)排程。-e
編輯(edit)排程。-r
刪除(remove)排程。每一個使用者用戶,都有自己的排程管理,所以要查看自己定義的排程,就可以透過以下指令。
[root@localhost ~]# crontab -l
[root@localhost ~]# crontab -u [使用者帳戶] -l
進入排程內容,編輯跟 vi
的方式差不多。
[root@localhost ~]# crontab -e
編輯特定使用者排程內容,跟檢視特定使用者排程一樣。
[root@localhost ~]# crontab -u [使用者帳戶] -e
[root@localhost ~]# crontab -r
[root@localhost ~]# crontab -u [使用者帳戶] -r
排程服務會讀取排程的設定檔 /etc/crontab
,檔案內容分為「環境設定」與「排程工作」。
[root@localhost ~]# cat /etc/crontab
# 環境設定
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
# 排程工作
# Example of job definition:
# .---------------- minute (0 - 59)
# | .------------- hour (0 - 23)
# | | .---------- day of month (1 - 31)
# | | | .------- month (1 - 12) OR jan,feb,mar,apr ...
# | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# | | | | |
# * * * * * user-name command to be executed
依照CentOS7 的環境設定,預設都會以 bash
的 shell。
MAILTO 則是會將執行排程工作的輸出訊息以郵件方式寄給使用者。
欄位編號 | 說明 | 可設定值 |
---|---|---|
1 | 分鐘 | 0分 到 59分 |
2 | 小時 | 凌晨 0時 到 23時 |
3 | 日期 | 每月1日 到 31日 |
4 | 月份 | 1月 到 12月,可用英文簡稱,例如:Jan、Feb... |
5 | 星期 | 0 到 7,0,7 都代表星期日,可用英文簡稱,例如:Mon |
6 | 使用者帳號 | 依照哪個使用設定的排程去執行該排程 |
7 | 排程工作指令 | 自行定義排程指令 |
特殊符號 | 說明 |
---|---|
* |
任意時間 |
, |
分隔不同時間點 |
- |
時間區間 |
/n |
每隔n單位執行 |
設定值 | 排程時程 | 備註 |
---|---|---|
@reboot | 每次重新開機就執行 | |
@yearly | 每年1日執行 | 0 0 1 1 * |
@annually | 同上 | 0 0 1 1 * |
@monthly | 每月一號零時零分執行 | 0 0 1 * * |
@weekly | 每週星期天零時零分執行 | 0 0 * * 0 |
@daily | 每天零時零分執行 | 0 0 * * * |
@midnight | 同上 | 0 0 * * * |
@hourly | 每小時零分執行 | 0 * * * * |
設定值 | 排程時程 | 備註 |
---|---|---|
01 * * * * | 每小時的第1分鐘執行 | |
00 04 * * * | 每天凌晨04點00執行 | |
00 01 * * 1 | 每個禮拜星期一的凌晨01點00執行 | |
00 01 * * Mon | 同上 | |
30 08 15 * * | 每個月的15日08點30分執行 | |
01 * 4 May * | 每年五月4日每小時的第一分鐘執行 | |
*/10 * * * * | 每10分鐘執行一次 | |
00 10-15 * * * | 每天從早上10點到下午15點,整點執行一次 | |
00,30 * * * * | 每小時的00分及30分各執行一次 |
每天凌晨1點、下午13點執行一次備份
0 1,13 * * * /home/web/crontab/backup.sh
每30分鐘執行一次。
*/30 * * * * /home/web/crontab/calculation.sh
使用特殊排程時間,每天0時0分進行備份
@daily /home/web/crontab/backup.sh